<html>
<body>
Reports implementations of <code>hashCode()</code> that access
non-<code>final</code> variables.
<p>
  Such access may result in <code>hashCode()</code>
  returning different values at different points in the object's lifecycle, which may in turn cause problems when
  using the standard collections classes.
</p>
<p><b>Example:</b></p>
<pre><code>
  class Drink {
    String name;
    Drink(String name) { this.name = name; }
    @Override public int hashCode() {
      return Objects.hash(name); //warning
    }
  }
  ...
    Drink coffee = new Drink("Coffee");
    priceMap.put(coffee, 10.0);
    coffee.name = "Tea";
    double coffeePrice = priceMap.get(coffee); //not found
</code></pre>
<p>A quick-fix is suggested to make the field final:</p>
<pre><code>
  class Drink {
    final String name;
    ...
  }
</code></pre>
<!-- tooltip end -->

</body>
</html>